package a_doubleWrite;

import util.ListNode;

/**
 * 82. 删除排序链表中的重复元素 II
 * 存在一个按升序排列的链表，给你这个链表的头节点 head ，
 * 请你删除链表中所有存在数字重复情况的节点，只保留原始链表中 没有重复出现 的数字。
 * <p>
 * 返回同样按升序排列的结果链表。
 *
 * @author luolidong
 * @version 1.0
 * @create 2021-07-22 19:14
 */
public class L82 {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode pre = dummy;//pre记录前一个节点
        //后面至少有两个数
        while (pre.next != null && pre.next.next != null) {
            //不相等
            if (pre.next.val != pre.next.next.val) {
                pre = pre.next;//前进一个
            } else {
                //后面至少两数相等
                //记录值
                int val = pre.next.val;
                //每次跳过相同的一个数
                while (pre.next != null && pre.next.val == val) {
                    pre.next = pre.next.next;
                }
            }
        }
        return dummy.next;
    }

    public static void main(String[] args) {
        L82 l82 = new L82();
        ListNode listNode = l82.deleteDuplicates(ListNode.build());
        System.out.println(listNode);
    }
}
